﻿//#define PRUEBA1

//#define PRUEBA2

// rbus global
//#define PRUEBA3     

//#define PRUEBA4

// archivos en galpon
#define PRUEBA5    

//#define PRUEBA6

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;

namespace PruebaServicioMensajes
{
    class Program
    {
        static void Main(string[] args)
        {
#if PRUEBA1
            string prueba1 = pruebaServicio("cluster2.rosariobus.com.ar", "/ServicioRBus.asmx");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine(prueba1);
#elif PRUEBA2
            string prueba2 = pruebaServicio("srvcoches.rosariobus.com.ar", "/ServicioRBus.asmx");
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine(prueba2);
#elif PRUEBA3
            string prueba3 = pruebaServicio("centrogps.rosariobus.com.ar", "/ServicioRBus.asmx");
            Console.ForegroundColor = ConsoleColor.DarkCyan;
            Console.WriteLine(prueba3);
#elif PRUEBA4
            string prueba4 = pruebaServicio("cluster2.rosariobus.com.ar", "/ServicioArchivos/ServicioArchivos.asmx");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(prueba4);
#elif PRUEBA5
            string prueba5 = pruebaServicio("srvcoches.rosariobus.com.ar", "/ServicioArchivos/ServicioArchivos.asmx");
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(prueba5);
#elif PRUEBA6
            string prueba6 = pruebaServicio("centrogps.rosariobus.com.ar", "/ServicioArchivos/ServicioArchivos.asmx");
            Console.ForegroundColor = ConsoleColor.DarkYellow;
            Console.WriteLine(prueba6);
#endif
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("OK!");
            Console.ReadLine();
        }

        static string pruebaServicio (string host, string recurso)
        {
            string retorno = string.Empty;

            TcpClient tcpClient = new TcpClient();
            tcpClient.Connect(host, 80);

            using (NetworkStream ns = tcpClient.GetStream())
            {
                byte[] req = Encoding.ASCII.GetBytes (
                    string.Format("GET {0} HTTP/1.1 \r\n", recurso) +
                    string.Format("Host: {0} \r\n", host) +
                    "\r\n"
                );

                ns.Write(req, 0, req.Length);

                byte[] bufflec = new byte[1024];
                int leido = 0;

                while (0 != (leido = ns.Read(bufflec, 0, bufflec.Length)))
                {
                    string parte = Encoding.ASCII.GetString(bufflec, 0, leido);
                    retorno += parte;

                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.WriteLine("Leyendo parte de {0} bytes", parte.Length);

                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(ns.DataAvailable);

                    if (-1 != parte.IndexOf("</html>"))
                        break;
                }

                ns.Close();
            }

            tcpClient.Close();
            return retorno;
        }
    }
}
